package com.admin.system.service.mapstruct;

import com.admin.model.base.BaseMapper;
import com.admin.model.pojo.Dept;
import com.admin.model.dto.DeptDto;
import io.jsonwebtoken.lang.Collections;
import org.mapstruct.Mapper;
import org.mapstruct.ReportingPolicy;

import java.util.List;

/**
 * (User)表服务接口
 *
 * @author makejava
 * @since 2021-01-31 19:19:30
 */
@Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface DeptMapper extends BaseMapper<DeptDto, Dept> {
    default DeptDto toDto(Dept entity) {
        if (entity == null) {
            return null;
        } else {
            DeptDto deptDto = new DeptDto();
            deptDto.setCreatedBy(entity.getCreatedBy());
            deptDto.setCreatedUser(entity.getCreatedUser());
            deptDto.setUpdatedBy(entity.getUpdatedBy());
            deptDto.setUpdatedUser(entity.getUpdatedUser());
            deptDto.setCreateTime(entity.getCreateTime());
            deptDto.setUpdateTime(entity.getUpdateTime());
            deptDto.setId(entity.getId());
            deptDto.setPid(entity.getPid());
            deptDto.setName(entity.getName());
            deptDto.setSort(entity.getSort());
            deptDto.setEnabled(entity.getEnabled());
            List<DeptDto> deptDtoList = this.toDto(entity.getChildren());
            if(!Collections.isEmpty(deptDtoList)){
                deptDto.setChildren(deptDtoList);
            }else{
                deptDto.setChildren(null);
            }
            return deptDto;
        }
    }
}